package service;

import pojo.Goods;

import java.util.List;

/**
 * @author CaiKe
 * @create 2021/1/8
 */
public interface GoodsService {

    /**
     * 添加商品
     * @param goods 商品对象
     * @return true表示添加成功，false表示添加失败
     */
    boolean addGoods(Goods goods);

    /**
     * 删除商品
     * @param id 商品的id
     * @return true表示成功，false表示失败
     */
    boolean deleteGoods(int id);

    /**
     * 出（入）库商品
     * 注意，出库时若商品数量变为0，则直接删除该商品(前端检测叭~~~)
     * @param id 商品id
     * @param num 库数量
     * @return true表示删除成功，false表示删除失败
     */
    boolean portGoods(int id, int num);

    /**
     * 更新商品信息
     * @param goods 商品对象
     * @return true表示成功，false表示失败
     */
    boolean updateGoods(Goods goods);

    /**
     * 查询指定用户或者仓库的所有 商品
     * @param aimId 目标的id
     * @param chose 0则表示用户id，1则表示仓库id
     * @return 商品列表
     */
    List<Goods> queryAllGoods(int aimId, int chose);

    /**
     * 查找所有商品信息
     * @return 所有商品信息的列表
     */
    List<Goods> queryAllGoods();

    /**
     * 通过商品的id查询该商品的数目
     * @param id
     * @return 所查询id的商品的数目Integer
     */
    Integer queryGoodsNumById(int id);

    /**
     * 通过商品id查找商品
     * @param id
     * @return 商品对象
     */
    Goods queryGoodsById(int id);

    /**
     * 查询所有商品的总数量
     * @return 商品数量，失败则返回 null
     */
    Integer queryForGoodsNum();

    /**
     * 查询最近的 num 条商品信息
     * @param num 最近几条
     * @return 商品列表
     */
    List<Goods> queryLatestGoods(int num);
}
